<html>
<head>
<title> Linux Video Stream Processing Tool - Examples</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<meta name="keywords" content="DVD, digital video, DV, encoder, divx,
DivX;-), lame, source, posix, avifile, opendivx, codec, linux, AC3,
program stream, video, audio, transcode, decoder, stream, YV12">
</head>

<body bgcolor=#CDB5CD>

<a name=top></a>
<table cellspacing="10" cellpadding="0" border="0" width="100%">
  <tr>
    <td align=left valign="top" width=30% bgcolor="#a0a0a0">
    <table border="0" cellpadding="10" cellspacing="3" font size=+2 bgcolor="#ffffff" width=100%>
      <td align="left" bgcolor="#e9e9e9"> <FONT
      FACE="Lucida,Helvetica">Introduction:</font>
    </tr>
    <tr>

      <td>

	   <ul>

	     <li> <a href="#about"> <FONT FACE="Lucida,Helvetica">
		  Overview</i></font></a> <p>

	     <li> <a href="options.html"> <FONT FACE="Lucida,Helvetica">
		  Command-line options</font></a> <p>

	     <li> <a href="modules.html"> <FONT FACE="Lucida,Helvetica">
		  Import/export/filter plug-ins</font></a> <p>

	   </ul>

      </td>
    </tr>
</table>
</table>

<a name=about></a>
<table cellspacing="10" cellpadding="0" border="0" width="100%">
  <tr>
    <td align=left valign="top" width=30% bgcolor="#a0a0a0">
    <table border="0" cellpadding="10" cellspacing="3" font size=+2 bgcolor="#ffffff" width=100%>
      <td align="left" bgcolor="#e9e9e9"> <FONT
      FACE="Lucida,Helvetica">Overview:
    </tr>
    <tr>
      <td>

	  <FONT color=red><i> transcode </i> </font>
is a linux text-console utility for video stream processing,
running on a platform that supports shared libraries and threads.
Decoding and encoding is done by loading modules that are responsible
for feeding transcode with raw video/audio streams (import modules)
and encoding the frames (export modules). It supports elementary video
and audio frame transformations, including de-interlacing
or fast resizing of video frames and loading of external filters.
A number of modules are included to enable import of DVDs on-the-fly,
MPEG elementary (ES) or program streams (VOB), MPEG video,
Digital Video (DV),
YUV4MPEG streams, NuppelVideo file format and raw or compressed (pass-through) video frames
and export modules for writing DivX;-), OpenDivX, DivX 4.xx or
uncompressed AVI files with MPEG, AC3 (pass-through) or PCM audio.
Additional export modules to write single frames (PPM) or
YUV4MPEG streams are available, as well as an interface import module
	  to the <i>avifile</i> library.
It's modular concept is intended to provide flexibility and easy user
extensibility to include other video/audio codecs or file types.
A set of tools is included to demux (<FONT color=red><i>tcdemux</i></font>), extract (<FONT color=red><i>tcextract</i></font>) and decode
	   (<FONT color=red><i>tcdecode</i></font>) the sources
into raw video/audio streams for import, probing (<FONT
	  color=red><i>tcprobe</i></font>) and scanning (<FONT
	  color=red><i>tcscan</i></font>) your sources and to enable post-processing
of AVI files, fixing AVI file header information (<FONT
	   color=red><i>avifix</i></font>), merging multiple files (<FONT color=red><i>avimerge</i></font>) or splitting
large AVI files (<FONT color=red><i>avisplit</i></font>) to fit on a CD.
<p><p>


	  <b><i>transcode</i></b> plug-in architecture overview:<p>
	  <i>transcode</i> loads shared library modules that are responsible for feeding it with raw streams and encoding the frames.
	  <ul>
	    <li> The <b>import modules</b> for audio/video decoding are loaded with
		<i>dlopen</i> system call and are
		responsible for starting the video and audio streams (directly or via the
		<i>popen</i> system call) and have a single function interface to the main program.
	    The import is handled by a thread that buffers the video/audio frames.<p>
	    <li> The main program <b><i>transcode</i></b> currently performs
		a number of video/audio frame manipulations (in
		this order) or allows simple pass-through of raw frame data:
		<p>

		<font size=+2 color=blue>Video:</font>
		<ul>

		  <li> cut out arbitrary frame region before processing

		  <li> de-interlace video frame

		  <li> fast enlarging of video width/height by a
		       multiple of 8/16/32 rows/columns up to 1024x768

		  <li> fast reduction of video width/height by a multiple of 8/16/32 rows/columns

		  <li> high-quality resizing with different filtering

		  <li> cut out arbitrary frame region for encoding

		  <li> fast rescale (down-sample) video width/height by a power of 2

		  <li> flip video frame upside down

		  <li> mirror image of video frame

		  <li> swap <i>red</i> and <i>blue</i> bytes or chroma
		       components in video frame

		  <li> transform to  b/w video frame

		  <li> apply gamma correction

		  <li> anti-alias video frame

		  <li> DVD subtitle overlay (plug-in)

		</ul>

		<p>
		<font size=+2 color=blue>Audio:</font>
		<ul>
		  <li> swap byte order in audio stream
		  <li> change the volume of the audio stream
		  <li> re-sample audio stream (plug-in)
		  <li> down-sample to mono
		  <li> down-sample to 8-bit unsigned byte stream
		  <li> sync video with audio frames (V=0|A=N, V=1|A=N+1,...)
		</ul>
		<p>

		<font size=+2 color=blue>Filter Plug-Ins:</font>
		<ul> <li>Additional effects are available via <a href=filter.html>external filter plug-ins</a> loaded with option "-J".
		</ul><p>


	    <li> The <b>export modules</b> for audio/video encoding
		are loaded via the <i>dlopen</i> system call and the
		encoder loop is started for the selected frames. In
		most cases audio and video are handled by the same
		module.
	  </ul>

	  <p>
	  <b><i>transcode</i></b> supported formats and codecs overview:<p>

	  <table cellspacing="10" cellpadding="0" border="0" width="100%">
	      <tr>
	      <td align=center>
	      <img src="tc.png">
	      </td>
	    </tr>

	    <tr><td align=center>
	      (ES=elementary stream, including
	      concatenated frames, PES=packetized elementary stream,
	      including program streams)</tr>

      </table>
<p>
	   Colored boxes are supported without additional packages. However, most
	  capabilities are only available in the <i>0.6.0</i> pre-releases.
Unconnected boxes not yet implemented, but <i>0.6.0</i> (final) will
	  have a symmetrical butterfly structure.
	  OpenDivX
	  (obsolete) support included, but much newer and faster DIVX
      encoding/decoding requires additional codecs available for linux.
	  Picture import supported by newer versions of <i>ImageMagick</i>
	  (0.5.x). Additional optional audio/video import codecs supported by using the
	  <i>avifile</i> library. Quicktime movie with limited codec
	  support is available via
	  the <i>quicktime4linux</i> library. You need <i>libdv</i>
	  installed to enable Digital Video decoding/encoding. <p>



</tr>



    </tr>
</table>
</table>







<!-- hhmts start -->
Last modified: Fri Nov 29 15:45:16 Europe/Berlin 2002
<!-- hhmts end -->

</body> </html>
